package org.com.service;

import com.baomidou.mybatisplus.extension.service.IService;
import org.com.pojo.Products;
import org.com.common.R;
import org.springframework.web.multipart.MultipartFile;

import java.util.List;

/**
* @author 86134
* @description 针对表【products】的数据库操作Service
* @createDate 2025-02-27 16:33:36
*/
public interface ProductsService extends IService<Products> {
    /**
     * 获取所有商品列表
     * @return 商品列表
     */
    R getAllProducts();

    /**
     * 获取农场的所有商品
     * @param farmId 农场ID
     * @return 商品列表
     */
    R getFarmProducts(Integer farmId);
    
    /**
     * 获取当前用户的所有商品
     * @param userId 用户ID
     * @return 商品列表
     */
    R getUserProducts(Integer userId);
    
    /**
     * 创建商品
     * @param product 商品信息
     * @param images 商品图片
     * @param categoryIds 分类ID列表
     * @return 创建的商品
     */
    R createProduct(Products product, List<MultipartFile> images, List<Integer> categoryIds);

    /**
     * 删除商品
     * @param productId 商品ID
     * @return 删除结果
     */
    R deleteProduct(Integer productId);

    /**
     * 获取商品详情
     * @param productId 商品ID
     * @return 商品详情
     */
    R getProductDetail(Integer productId);

    /**
     * 更新商品库存
     * @param productId 商品ID
     * @param stock 新的库存数量
     * @return R
     */
    R updateProductStock(Integer productId, Integer stock);

    /**
     * 搜索商品
     * @param keyword 搜索关键词
     * @return 商品列表
     */
    R searchProducts(String keyword);

    /**
     * 根据分类获取商品
     * @param categoryId 分类ID
     * @return 商品列表
     */
    R getProductsByCategory(Integer categoryId);

    /**
     * 更新商品状态
     * @param productId 商品ID
     * @param status 状态：1-上架中，0-已下架
     * @return R
     */
    R updateProductStatus(Integer productId, Integer status);

    /**
     * 获取所有商品列表（管理员用，包含已下架商品）
     * @return 商品列表
     */
    R getAllProductsForAdmin();
}
